<?php
namespace app\admin\controller;

use app\common\controller\Backend;
use think\Db;

class Index extends Backend
{
    // 覆盖全局变量 不需要登录
    protected $NoNeedLogin=['login','logout'];
    // protected $NoNeedLogin=['*'];


    public function __construct()
    {
        parent::__construct();
        $this->AdminModel=model('Admin');
    }

    public function index()
    {
        return $this->fetch();
    }

    // 控制台主界面
    public function main(){
        // 数据统计
        $UserCount=Db::name("user")->count();
        $PostCount=Db::name("post")->count();
        $CommentCount=Db::name("comment")->count();
        $PayCount=Db::name("pay")->count();

        // 查询数据库版本
        $version=Db::query("select version() as ver");

        $this->assign([
            'UserCount'=>$UserCount,
            'PostCount'=>$PostCount,
            'CommentCount'=>$CommentCount,
            'PayCount'=>$PayCount,
            'MysqlVersion'=>$version[0]['ver'],
        ]);

        return $this->fetch();
    }

    // 登录
    public function login(){
        // 生成一个管理员的密码
        // $password=123123;$salt=randstr(10);$password=md5($password.$salt);echo $salt;echo "<br />";echo $password;

        // 判断是否有登录
        $LoginAdmin=session('LoginAdmin');

        if(!empty($LoginAdmin)){
            $id = isset($LoginAdmin['id']) ? $LoginAdmin['id'] : 0;

            // 根据id查询用户 关联查询
            $admin = $this->AdminModel->find($id);

            // 当这个人不存在
            if(!$admin){
                // session属于伪造的
                session('LoginAdmin',null);
                $this->error('非法登录',url('admin/index/login'));
                exit;
            }

            // 判断是否有禁用
            if(!$admin['state']==0){
                session('LoginAdmin',null);
                $this->error('该管理员已被禁用',url('admin/index/login'));
                exit;
            }

            $this->success('你已登录，无需重复登录',url('admin/index/index'));
            exit;
        }

        if($this->request->isPost()){
            $username=$this->request->param('username','');
            $password=$this->request->param('password','');

            // 先判断用户是否存在
            $admin=$this->AdminModel->where(['username'=>$username])->find();

            // 判断用户是否查询到
            if(!$admin){
                $this->error('管理员不存在');
                exit;
            }

            // 验证密码
            $salt=$admin['salt'];

            // 加密密码
            $password=md5($password.$salt);

            // 判断密码是否正确
            if($password != $admin['password']){
                $this->error('管理员密码错误');
                exit;
            }

            // 判断账号是否被禁用
            if($admin['state']==0){
                $this->error('该账号已被禁用');
                exit;
            }

            // 保存登录信息 session
            $data=[
                'id'=>$admin['id'],
                'nickname'=>$admin['nickname'],
            ];

            session('LoginAdmin',$data);

            $this->success('管理员登录成功',url('admin/index/index'));
            exit;
        }

        return $this->fetch();
    }

    // 退出
    public function logout(){
        // 删除session
        session('LoginAdmin',null);
        $this->success('退出成功',url('admin/index/login'));
    }
}
